package com.fy.fyspace.service;

import com.fy.fyspace.common.result.R;

import javax.servlet.http.HttpServletResponse;
import java.time.LocalDateTime;
import java.util.Map;

/**
 * 系统监控服务接口
 */
public interface MonitorService {

    /**
     * 获取Redis详细监控信息
     */
    R getRedisDetailedStatus();

    /**
     * 获取数据库连接池详细监控信息
     */
    R getDatabasePoolDetailedStatus();

    /**
     * 获取RabbitMQ监控信息
     */
    R getRabbitMQStatus();

    /**
     * 获取腾讯云COS监控信息
     */
    R getCosStatus();

    /**
     * 获取缓存统计信息
     */
    R getCacheStatistics();

    /**
     * 获取API调用统计
     */
    R getApiStatistics();

    /**
     * 获取错误日志统计
     */
    R getErrorLogStatistics();

    /**
     * 获取系统告警信息
     */
    R getSystemAlerts();

    /**
     * 获取监控仪表板数据
     */
    R getDashboardData();

    /**
     * 获取Redis监控统计信息，结构化返回，便于前端渲染
     */
    Map<String, Object> getRedisStatistics();

    /**
     * 获取MySQL数据库监控统计信息，结构化返回，便于前端渲染
     */
    Map<String, Object> getDatabaseStatistics();

    /**
     * 获取线程池状态
     */
    Map<String, Object> getThreadPoolStatus();

    /**
     * 获取系统资源监控信息
     */
    Map<String, Object> getSystemResources();

    /**
     * 获取业务数据统计
     */
    Map<String, Object> getBusinessStatistics();

    /**
     * 获取系统健康状态
     */
    Map<String, Object> getSystemHealth();

    /**
     * 获取监控配置
     */
    Map<String, Object> getMonitorConfig();

    /**
     * 重置监控统计数据
     */
    String resetMonitorStatistics();

    void exportMonitorData(HttpServletResponse response, String dataType, LocalDateTime startTime, LocalDateTime endTime);
} 